package demo.vo;

import com.alibaba.fastjson.JSON;

import java.util.concurrent.TimeUnit;

/**
 * 缓存的对象，解决不能缓存null的问题
 *
 * @author junying.han
 */
public class CachedObject<T> {

    private long timestamp;
    private T data;

    public long getTimestamp() {
        return timestamp;
    }

    public T getData() {
        return data;
    }

    public CachedObject(T data) {
        super();
        this.data = data;
        this.timestamp = System.currentTimeMillis();
    }

    /**
     * 是否过期
     *
     * @param ttlSeconds 过期时间：秒
     * @return
     */
    public boolean isOverdue(int ttlSeconds) {
        return System.currentTimeMillis() - timestamp > ttlSeconds * 1000L;
    }

    /**
     * 是否过期
     *
     * @param ttl  过期时间
     * @param unit 过期单位
     * @return
     */
    public boolean isOverdue(long ttl, TimeUnit unit) {
        return System.currentTimeMillis() - timestamp > unit.toMillis(ttl);
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
